PHP keuzes maken
Home

PHP keuzes maken

PHP keuzes maken

In een PHP programmascript kan keuzes maken met behulp van beslissingsstructuren. Om een keuze te kunnen maken moeten er waarden vergeleken worden. Vergelijken doe je met behulp van vergelijkingsoperatoren.

Vergelijkingsoperatoren

We hebben al kennis gemaakt met de rekenkundige operatoren in PHP rekenen. Hier maken we kennis met de vergelijkingsoperatoren.

Vergelijkingsoperatoren vergelijken de waarden die voor en na de operator komt met elkaar. In de tabel hieronder staan de meest gebruikte operators.

Operator Beschrijving
== de waarden zijn gelijk aan elkaar
!= de waarden zijn niet gelijk aan elkaar
=== de waarden en het gegeventype zijn gelijk aan elkaar
!== de waarden en het gegeventype zijn niet gelijk aan elkaar
> groter dan
< kleiner dan
>= gelijk aan, of groter dan
<= gelijk aan, of kleiner dan

In de beslissingsstructuren zien we hoe je de vefgelijkingsoperatoren kan gebruiken.

if-elseif-else

ifelse2
if else

Een if statement, met eventueel de bijbehorende elseif en else statements) zijn de meest voorkomende statements om te kijken of er aan een bepaalde conditie is voldaan. Zo kan je bijvoorbeeld kijken of een getal groter of kleiner is dan een ander getal.

Vergelijken met ==,

De waarden worden vergeleken maar er wordt niet gecontreleerd of het gegevenstype ook gelijk is:

$a = 30;
$b = 24;
// Is de waarde van $a gelijk aan de waarde van $b?
if ($a == $b)
{
    echo '<p>de waarde van $a (' . $a . ') is gelijk aan de waarde van $b (' . $b . ').</p>';
}
// is de waarde van $a dan misschien groter dan de waarde van $b?
elseif ($a > $b)
{
    echo '<p>de waarde van $a (' . $a . ') is groter dan de waarde van $b (' . $b . ').</p>';
}
// Als de waarde van $a niet gelijk is aan $b, een ook niet groter, dan is die kleiner
else
{
    echo '<p>de waarde van $a (' . $a . ') is kleiner dan de waarde van $b (' . $b . ').</p>';
}

Output:

de waarde van $a (30) is groter dan de waarde van $b (24)

Als we van $b een string maken en dezelfde waarde eraan toekennen als aan $a, zal de vergelijking met == ook TRUE opleveren:

$a = 30;
$b = '30';
// Is de waarde van $a gelijk aan de waarde van $b?
if ($a == $b)
{
    echo '<p>de waarde van $a (' . $a . ') is gelijk aan de waarde van $b (' . $b . ')</p>';
}
// is de waarde van $a dan misschien groter dan de waarde van $b?
elseif ($a > $b)
{
    echo '<p>de waarde van $a (' . $a . ') is groter dan de waarde van $b (' . $b . ')</p>';
}
// Als de waarde van $a niet gelijk is aan $b, een ook niet groter, dan is die kleiner
else
{
    echo '<p>de waarde van $a (' . $a . ') is kleiner dan de waarde van $b (' . $b . ')</p>';
}

Output:

de waarde van $a (30) is gelijk aan de waarde van $b (30)

Vergelijken met ===

$a = 30;
$b = '30';
// Is de waarde van $a gelijk aan de waarde van $b?
if ($a === $b)
{
    echo '<p>de waarde van $a (' . $a . ') is gelijk aan de waarde van $b (' . $b . ').</p>';
}
// is de waarde van $a dan misschien groter dan de waarde van $b?
elseif ($a > $b)
{
    echo '<p>de waarde van $a (' . $a . ') is groter dan de waarde van $b (' . $b . ').</p>';
}
// is de waarde van $a dan misschien kleiner dan de waarde van $b?
elseif ($a < $b)
{
    echo '<p>de waarde van $a (' . $a . ') is groter dan de waarde van $b (' . $b . ').</p>';
}
// in het andere geval zijn het gegevenstype van $a en $b verschillend
else
{
    echo '<p>het gegevenstype van $a (' . $a . ') is verschillend van dat van $b (' . $b . ').</p>';
}

Let erop dat we een elseif hebben moeten toevoegen omdat de else nu gebruikt wordt voor het geval de gegevenstypes verschillend zijn.

Output:

het gegevenstype van $a (30) is verschillend van dat van $b (30)

switch

Als er maar één variabele in de vergelijking staat kan je met meerder elseif's werken, maar dit levert onoverzichtelijke code op, die meestal wat moeilijker te volgen is. Daarom is het beter om in dat geval het switch-statement te gebruiken.

$a = 30;
switch ($a) {
    case 30  :
        echo '<p>de waarde van $a (' . $a . ') is gelijk aan 30</p>';
        break;
    case 20 :
        echo '<p>de waarde van $a (' . $a . ') is gelijk aan 20</p>';
        break;
    case 10 :
        echo '<p>de waarde van $a (' . $a . ') is gelijk aan 10</p>';
        break;
    default :
        echo '<p>de waarde van $a (' . $a . ') is niet gelijk 30, 20 of 10</p>';
}

Output:

de waarde van $a (30) is gelijk aan 30

Op het einde van de codeblok in een bepaalde 'case' plaats je een break om te voorkomen dat er door wordt gegaan met de volgende 'case'. Als geen van de cases het geval zijn, wordt de default case uitgevoerd. Bij een default hoeft over het algemeen geen "break", omdat deze toch als laatste staat.

Door slim om te gaan met de break statements en een kleine codeaanpassing kan je de bovenstaande switch statement ook als volgt implementeren:

$a = 30;
switch ($a) {
    case 30 :
    case 20 :
    case 10 :
        echo '<p>de waarde van $a (' . $a . ') is gelijk aan ' . $a . '</p>';
        break;
    default :
        echo '<p>de waarde van $a (' . $a . ') is niet gelijk 30, 20 of 10</p>';
}

JI
2020-02-12 13:21:22